跳到主要内容

1.6 优先编码器

在前面的教程中,我们已经了解了二进制编码器,它们可以对给定的数据进行编码。然而,标准的数字编码器有一个限制,即如果在同一时间有多个输入处于激活状态,它会在输出端产生错误。如果两个输入同时为逻辑1,它会产生一个未定义的输出组合。

alt text

例如,在8到3线编码器的情况下,如果 D2D_2D5D_5 同时为1,编码器的输出为 111,这意味着所有三个输出都等于逻辑1。这个值既不对应于二进制2,也不对应于二进制5(例如,一个人在操作键盘时可能会在释放第一个键之前按下第二个键)。

为了克服这个问题,编码器电路必须建立一个优先级,以便在这些情况下只对一个输入进行编码。这意味着,当两个输入同时为逻辑1时,编码器必须对每个输入的优先级进行排序,以便产生对应于最高优先级输入的输出。这种编码器被称为优先编码器

优先编码器

如前所述,优先编码器是一种编码器,它对输入施加了排序,即与标准编码器相比,它包含了优先级功能。

然而,这种优先级是基于输入的相对大小的。因此,具有较大数值的输入是首先被编码的。

优先编码器可以在许多实际应用中选择具有最高优先级的输入。这个选择过程被称为仲裁

一个最常见的仲裁例子是,在计算机系统中有许多输入设备,其中一些设备会尝试同时向计算机提供数据。在这种情况下,优先编码器使得在同时尝试访问计算机的设备中,具有最高优先级的输入设备能够被启用。

让我们看看4输入和8输入优先编码器的设计。

简单的4输入优先编码器

这种优先编码器包含4个输入和3个输出。尽管编码器有 2n2^n 个输入和 nn 个输出,但它有一个额外的第三输出“V”,这是一个有效的比特指示器,当一个或多个输入处于激活状态或等于1时,它被设置为1。

当所有输入均为零时,这个有效比特为零,表示没有有效的输入。在这种情况下,其他输出被认为是无关条件,当“V”为零时,它们不会被检查。

根据真值表,具有较高下标数字的输入将具有较高的优先级,即最高有效位将具有最高优先级,而最低有效位将具有最低优先级。

在真值表中,D3D_3 具有最高优先级,而 D0D_0 具有最低优先级。当 D3D_3 处于激活状态或为1时,无论其他输入如何,输出为11。接下来的较高优先级是 D2D_2,在 D3D_3 之后。

再往后是 D1D_1。因此,当 D3D_3 为0且 D2D_2 为1时,无论其他两个输入(它们具有较低的优先级)如何,输出为10。当较高优先级的输入为零时,则为 D1D_1 生成输出,依此类推,沿着优先级级别向下。

alt text

从上面的真值表中,我们可以写出两个输出的布尔表达式为:

alt text

K-map 简化

上述输入和有效输出的表达式可以通过 K-map 简化获得。尽管这个编码器的真值表显示为五行,但当我们用零替换每行中的每个“×”,然后用一替换时,我们可以得到16种输入组合。两个输出的最小项可以推导为:

Y1=m(1,2,3,5,6,7,9,10,11,13,14,15)Y_1 = \sum m(1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15)
Y0=m(1,3,4,5,7,9,11,12,13,15)Y_0 = \sum m(1, 3, 4, 5, 7, 9, 11, 12, 13, 15)

然后从下面的 K-map 中,我们得到输出为:

Y1=D3+D2Y_1 = D_3 + D_2
Y0=D3+D2D1Y_0 = D_3 + \overline{D_2} \cdot D_1
alt text

4输入优先编码器的逻辑图是通过 K-map 简化得到的相应输出表达式实现的。该编码器的电路图如下所示。

alt text

8到3优先编码器或八进制到二进制优先编码器

八进制到二进制优先编码器的真值表如下所示。这种编码器有8个输入和3个输出,用于生成对应的二进制代码。每个输入都被分配了一个优先级,因此当两个或多个输入同时为1时,输出将表示具有最高优先级的输入。

假设输入线 D2D_2D4D_4D7D_7 同时为逻辑1,无论其他输入如何,只有 D7D_7 将被编码,输出为111。同样地,如果 D3=1D_3 = 1,则 D2D_2D1D_1D0D_0 的状态是无关紧要的,输出等于011。

alt text

IC 74148 是最常用的8到3线优先编码器 MSI 编码器电路。这种编码器的主要特性包括:支持对 nn 位进行优先编码、代码转换、对最高优先级输入线进行优先编码、十进制到 BCD 转换、当所有输入均为高电平时,输出使能为低电平等。

数字电路的输入通常使用八进制代码,因此需要手动输入这样长的二进制字。因此,设计了编码器集成电路以实现这种操作。

下图显示了其引脚图,它具有低电平有效的输入和低电平有效的输出。为了处理更多的输入,这些集成电路通过启用输入和灰色输出进行级联,这些也是低电平有效的线路。

alt text

十进制到 BCD 优先编码器

这种类型的编码器执行与正常的十进制到 BCD 编码器相同的操作,即将十进制数字编码为4位 BCD 输出。然而,它包含了一个额外的功能,即提供优先级。这意味着 BCD 输出是根据出现在输入上的最高优先级的十进制数字产生的,而与其他所有输入无关。

下图显示了十进制到 BCD 编码器的真值表。该编码器有九个低电平有效的输入,代表从1到9的十进制数字。根据最高级激活的输入,它产生反转的 BCD 代码。

alt text

当从 D1D_1D9D_9 的所有输入均为逻辑1时,所有输出均被设置为1111,这是0000的反向,即0的 BCD 代码。当 D9=1D_9 = 1 时,输出为0110,这是1001的反向,即9的 BCD 代码。所有十进制数字的处理过程都是相同的。

当没有任何输入被激活时,输出通常为高电平,这种情况对应于十进制0输入。因此,当所有输入均为高电平时,编码器假定为十进制0状态,因为没有 D0D_0 输入。

此外,如果两个输入同时被激活,假设 D3D_3D5D_5,则这些输入中具有最高优先级的输入,即 D5D_5,被编码为1010,这是0101的反向,这就是这种编码器被称为优先编码器的原因。

16到4优先编码器

类似地,可以通过使用六个4到2编码器来构建16到4编码器。四个4到2编码器连接到16个输入,8个输出再次连接到两个4到2编码器,产生4个输出。

优先编码器的应用

与标准数字编码器相比,优先编码器在许多应用中更为常用。通过级联多个优先编码器,可以设计出更大的优先编码器。因此,这种类型的编码器用于减少在具有多个输入的特定应用中所需的连接数量。

键盘编码器

假设一个 QWERTY 键盘与微计算机连接,因此计算机必须读取键盘的104个键,以便在任何时间只读取一个按键,将其视为高电平或低电平。

如果计算机配置较低,不可能将所有104个连接直接连接到计算机,然而,通过使用优先编码器来连接它们是一种更有效的方法。通过这种编码器,每个字符或按键都被编码为一个标准的7位ASCII码(0-127十进制),从这104个按键或单独的按钮中生成。然后它将7位BCD码输入到计算机。这种类型的键盘编码器之一是20键的74C923。此外,这些编码器还提供了优先级功能,以便在同时按下两个键时,它会给出最高优先级的输入。

位置编码器

磁性位置控制是优先编码器的另一个常见应用。这种控制用于机械臂定位和船舶导航。在这种情况下,编码器将指南针的旋转或角度位置转换为数字代码。然后将此代码输入到计算机中,以便提供导航数据。

下图展示了一个简单的指南针编码器,它将8个位置转换为3位输出。对于这种输入-输出配置,使用了74LS148集成电路,这是一个8到3线的优先编码器。为了指示指南针的角度位置,通常使用干簧开关和磁铁。

alt text
alt text